//
//  OTATool.h
//  test
//
//  Created by tucici on 2024/12/2.
//

#import <Foundation/Foundation.h>
#import <CoreBluetooth/CoreBluetooth.h>
NS_ASSUME_NONNULL_BEGIN
@protocol OTAToolProtocol <NSObject>

/// 读取起始位置
/// - Parameter data:读取起始位置的指令，直接发送
/// - Parameter serviceUUID: 富芮坤的ota服务
/// - Parameter charUUID: 富芮坤的ota特征通道
-(void)readStorageAddress:(NSData *)data serviceUUID:(NSString *)serviceUUID charUUID:(NSString *)charUUID;

/// 清除地址
/// - Parameter data: 清除地址的指令，直接发送
/// - Parameter progress: 清除进度 0～100
/// - Parameter serviceUUID: 富芮坤的ota服务
/// - Parameter charUUID: 富芮坤的ota特征通道
-(void)clearAddress:(NSData *)data progress:(CGFloat)progress serviceUUID:(NSString *)serviceUUID charUUID:(NSString *)charUUID;

/// 写入数据
/// - Parameter data: 写入数据，直接发送
/// - Parameter progress: 写入数据进度0～100
/// - Parameter serviceUUID: 富芮坤的ota服务
/// - Parameter charUUID: 富芮坤的ota特征通道
-(void)writeData:(NSData *)data progress:(CGFloat)progress serviceUUID:(NSString *)serviceUUID charUUID:(NSString *)charUUID;

/// ota升级完成，重启
/// - Parameter data: 重启指令，直接发送
-(void)shouldResetWithSuccessDone:(NSData*)data serviceUUID:(NSString *)serviceUUID charUUID:(NSString *)charUUID;
@end
@interface OTATool : NSObject
@property (nonatomic, weak) id<OTAToolProtocol> delegate;

+ (instancetype)sharedInstance;

/// 接受蓝牙数据返回
/// - Parameters:
///   - peripheral: <#peripheral description#>
///   - characteristic: <#characteristic description#>
///   - error: <#error description#>
- (void)handleData:(CBPeripheral*)peripheral didUpdateValueFor:(CBCharacteristic*)characteristic error:(NSError *)error;
/// 预升级OTA
/// - Parameter binData: 传入bin文件
- (void)prepareWith:(NSData*)binData;

@end

NS_ASSUME_NONNULL_END
